package cn.com.cdb.ldms.base.page.annotation;

import cn.com.cdb.ldms.base.page.DateType;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
// 字段配置注解
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface FieldConfig {
    // 通用属性
    String label();                     // 字段显示名称
    boolean showInTable() default true;  // 是否在表格中显示
    int order() default 0;               // 显示顺序

    // 搜索表单相关配置
    boolean searchable() default false;  // 是否可搜索
    String searchType() default "";     // 搜索类型(为空则自动推断)
    DateType searchDateType() default DateType.DATE; // 日期类型
    String searchPlaceholder() default ""; // 搜索placeholder

    // 表单相关配置
    boolean editable() default true;     // 是否可编辑
    String formType() default "";        // 表单类型(为空则自动推断)
    String formPlaceholder() default ""; // 表单placeholder
    boolean disabledOnAdd() default false; // 新增时禁用
    boolean disabledOnEdit() default false; // 编辑时禁用
    boolean alwaysDisabled() default false; // 始终禁用

    // 选项配置(用于select等)
    Option[] options() default {};

    // 验证规则
    Validation[] searchValidations() default {}; // 搜索验证规则
    Validation[] formValidations() default {};   // 表单验证规则
}